package com.atguigu.file;

import org.junit.Test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileStreamTest {
    @Test
    /*
    结论:对于文本文件，使用字符流处理
    对于非文本文件，使用字节流处理
    若使用字节流处理文本文件，可能会出现乱码
     */
    public void test() {
        FileInputStream fs=null;
        try {
            //1.造文件
            File file = new File("hello.txt");
            //2.造流
            fs = new FileInputStream(file);
            //3.读数据
            byte[] buffer = new byte[5];
            int len; //记录每次读取的字节个数
            while ((len = fs.read(buffer)) != -1)
            {
                String str=new String(buffer,0,len);
                System.out.print(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //4.关闭资源
            try {
                if(fs!=null) {
                    fs.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    @Test
    public void test2(){
        FileInputStream fis=null;
        FileOutputStream fos=null;
        try {
            //需求实现对图片的复制
            File srcFile=new File("hello.jpg");
            File desFile=new File("hello1.jpg");
            fis=new FileInputStream(srcFile);
            fos=new FileOutputStream(desFile);
            byte[] buffer=new byte[5];
            int len;
            while((len=fis.read())!=-1){
                fos.write(buffer,0,len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if(fos!=null)
                fos.close();
            }catch(IOException e){
                e.printStackTrace();
            }
            try{
                if(fis!=null)
                fis.close();
            }catch (IOException e){
                e.printStackTrace();
            }
        }

    }
}
